// Loesung_von_Aufgabe_2.2.5_3_Kokosnuss

/* Sobald die Kugel den Gewehrlauf verlässt, unterliegt sie genau wie die
 Kokosnuss dem Gesetz des freien Falls. Bis zu ihrem Zusammentreffen haben
 beide die gleiche Fallstrecke zurückgelegt. Somit trifft die Kugel die
 fallende Kokosnuss, obwohl auf die ruhende Kokosnuss gezielt wurde. */

float yK0 = 283; // Abschusshöhe der Kugel
float xK = 0; // x-Wert der Kugel
float yK = 0; // y-Wert der Kugel
float vK0 = 200; // Abschussgeschwindigkeit der Kugel
float xN = 150; // x-Wert der Kokosnuss
float yN; // y-Wert der Kokosnuss
float yN0 = 50; // Startthöhe der Kokosnuss
float g = 98.1; // Erdbeschleunigung
float t = 0; // Zeit
float winkel = 57.23; // Winkel in Grad

void setup() 
{
  size(400, 300);
}

void draw() 
{
  background (255);
  t = t + 1/frameRate;

  // Intervall "Kugel trifft Kokosnuss"
  if (yK <= yN+2.0 && yK >= yN-2.0 && xK <= xN+2.0 && xK >= xN-2.0)
  {
    // Kokosnuss
    yN = yN0 + 0.5*g*t*t; // Bewegung in y-Richtung
    fill(200, 100, 20);
    ellipse(xN, yN, 20, 20);

    // Kugel steckt seitlich in der Kokosnuss
    xK = xN - 2.0; //  Bewegung in x-Richtung
    yK = yN; // Bewegung in y-Richtung

    fill(0);
    ellipse(xK, yK, 10, 10); 

    // Stamm mit Blätter
    fill(0, 255, 0);
    ellipse(170, 30, 70, 10);
    ellipse(220, 30, 70, 10);
    ellipse(190, 20, 10, 40);
    fill(200, 150, 20);
    rect(180, 30, 20, 300);

    // "Sportschütze"
    fill(255, 0, 0);
    rect(0, 283, 10, 300);
  } else if (yK != yN+2.0 && yK != yN-2.0  && xK != xN+2.0 && xK != xN-2.0)
  {
    // Kugel
    xK = vK0*t*cos(radians(winkel)); //  Bewegung in x-Richtung
    yK = yK0 - vK0*t*sin(radians(winkel)) + 0.5*g*t*t; // Bewegung in y-Richtung

    fill(0);
    ellipse(xK, yK, 10, 10); 

    // Kokosnuss
    yN = yN0 + 0.5*g*t*t; // Bewegung in y-Richtung
    fill(200, 100, 20);
    ellipse(xN, yN, 20, 20);

    // Stamm mit Blätter
    fill(0, 255, 0);
    ellipse(170, 30, 70, 10);
    ellipse(220, 30, 70, 10);
    ellipse(190, 20, 10, 40);
    fill(200, 150, 20);
    rect(180, 30, 20, 300);

    // "Sportschütze"
    fill(255, 0, 0);
    rect(0, 283, 10, 300);
  }
}